<?php defined('SYSPATH') or die('No direct script access.');

class Model_Registration {

    public $errors = NULL;
    
    /**
    * Метод осуществляет регистрацию пользователя
    * 
    * @param mixed $email Электорнный адрес/user name пользователя
    */
    public function registration($email, $role = 1) {
        //$useful_feature = new Model_Usefulfeature();
        
        // Добавляем пользователя в таблицу
        $user = new Model_Siteuser();
        
        $user -> email    = $email;
        $user -> username = $email;
        
        $auth = Auth::instance();  
        $password = Model_Usefulfeature::generate_password();
        $user -> password = $auth -> hash_password($password); 
        
        try {
            $user -> save();  
            
            // Узнаем с каким id сохранился юзер
            $id_user  = $this -> _get_last_id();
            
            // Назначаем роль, зарегавшемуся пользователю
            $add_role = new Model_Addrole();
            
            $add_role -> user_id = $id_user;
            $add_role -> role_id = $role;
            $add_role -> save();  
            
            // Отправка пароля и сообщения о успешной регистрации по email
            $mail_subject = 'Успешная регистрация';
            $mail_text    = $password;
            
            Model_Usefulfeature::send_email($email, 'studio-r5@mail.ru', $mail_subject, $mail_text);
            
            return true;
        }
        catch(ORM_Validation_Exception $e) {
            $this -> errors = $e -> errors('validation');    
            return false;
        }

    }
    
    /**
    * Вернет идентификатор последней добавленной записи в таблице
    * 
    */
    private function _get_last_id() {
        return mysql_insert_id();   
    }

} // End Registration
